package utils

import (
	"fmt"
	"strings"
)

// 截取指定字符串中间字符串的方法
func GetBetweenStr(str, start, end string) string {
	n := strings.Index(str, start)
	if n == -1 {
		n = 0
	}
	fmt.Println(n)
	str = string([]byte(str)[n:])
	m := strings.Index(str, end)
	fmt.Println(m)
	if m == -1 {
		m = len(str)
	}
	str = string([]byte(str)[:m])
	return str
}

/*
截取字符串，支持多字节字符
str：待截取字符串
start：起始下标，负数从从尾部开始，最后一个为-1
length：截取长度，负数表示截取到末尾
*/
func SubStr(str string, start int, length int) (result string) {
	s := []rune(str)
	total := len(s)
	if total == 0 {
		return
	}
	// 允许从尾部开始计算
	if start < 0 {
		start = total + start
		if start < 0 {
			return
		}
	}
	if start > total {
		return
	}
	// 到末尾
	if length < 0 {
		length = total
	}

	end := start + length
	if end > total {
		result = string(s[start:])
	} else {
		result = string(s[start:end])
	}

	return
}
